专利摘要:
RISCプロセッサ装置及びその命令アドレスの変換検索方法は開示される。該装置はデコーダを含む。前記のデコーダは検索テーブルモジュールを含み、該検索テーブルモジュールは、検索テーブルを利用してX86のソース命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われる。前記の検索テーブルモジュールは検索サブモジュールを含み、該検索サブモジュールは、内容に基づき検索テーブルにインデックスを付け、表項目がヒットされた場合には、対応する内容を目標レジスタに保存し、表項目がヒットされなかった場合には、不命中サービスプログラムの入口アドレスを目標レジスタに保存する。インデックスサブモジュールは、内容に基づき検索テーブルにインデックスを付け、該内容が所在する表項目のインデックスを得る。
公开号:JP2011510385A
申请号:JP2010542496
申请日:2008-11-24
公开日:2011-03-31
发明作者:胡偉武;蘇孟豪
申请人:中国科学院▲計▼算技▲術▼研究所;
IPC主号:G06F9-30
专利说明:

[0001] 本発明は、コンピュータ・プロセッサの技術に関し、より詳細には縮小命令セット・コンピュータ(RISC)のプロセッサ及びその命令アドレスの変換検索方法に関する。]
背景技術

[0002] 仮想機は、二十世紀六十年代にIBM社により提出された概念であり、現実化されている。当時に主流のコンピュータはメインフレームコンピュータであり、メインフレームコンピュータをいくつかの仮想機に分割し、仮想機のモニタ(Virtual Machine Monitor,VMM)のセグメンテーションを利用することにより、いくつかの異なる応用または複数のユーザがこの貴重な装置を共有することができる。]
[0003] しかし、ハードウェアのコストの減少と演算能力の増加、およびマルチタスクのオペレーティングシステム(OS)の登場によって、徐々に仮想機のモニタが歴史の舞台からさり、マイクロコンピュータとパーソナルコンピュータ(PC)が大活躍してきた。]
[0004] しかし、仮想機の強みと成功の理由は、ユーザが命令セットの組合だけにより形成されることのできる機能及び設備に対するアクセスと利用を実行できることにあるため、最近に、仮想機のモニタは学術界と産業界において再び注目を集めている。仮想機のモニタは現代のコンピュータシステムアーキテクチャの制限に対して一つのバーチャルの解決計画を提供し、強大な道具になり、この道具は現代のコンピュータシステムの能力をさらに拡張する。]
[0005] 現在のCISCプロセッサ(Complex Instruction Set Computing,CISC)のアーキテクチャ、特にX86のプロセッサアーキテクチャは数多くの応用に使用されており、たくさんの大型サーバーの応用はX86のアーキテクチャである。RISCプロセッサ(Reduced Instruction Set Computing,RISC)はサービスと関係する応用を広く実行するためには、X86のプロセッサとの互換性が必要となってきた。また、現在のX86のプロセッサのコンピュータは、アプリケーションがさらに多様化され、数多くのビジネスソフトウェアがX86のアーキテクチャベースで開発されているから、RISCマイクロプロセッサがさらに幅広く応用されるために、X86のプロセッサとの交換性の実現は非常に必要となってきた。]
[0006] MIPS命令セットのRISCプロセッサはRISCプロセッサの大きなブランチとして、現在にたくさんのオープンソースの仮想機プラットフォームが存在し、MIPS命令セットのRISCプロセッサからX86のプロセッサへの異なるアーキテクチャに対するサポートが実現できる。]
[0007] 仮想機の種類はさまざまであるが、その核心は翻訳または解釈のプロセスであり、即ち目標コードからローカルコードに翻訳または解釈し、ローカルマシンで実行可能なプロセスである。仮想機は、ローカルコードを実行する間にジャンプ命令があった場合、X86のソースプログラムの命令アドレスを対応するMIPSの目標プログラムの命令アドレスに変換する必要があり、その後に目標プログラムの命令アドレスに基づきジャンプを実現する。現在の技術では、仮想機がハッシュ(HASH)テーブルの方式でソースアドレスから目標アドレスへのマッピングを完成させ、毎回の検索を完成させるには、約20個の機械命令が必要である。]
[0008] 現在の技術における検索のプロセスは仮想機の性能に大きく影響し、仮想機の性能に対するユーザの要求が満足されていない。]
発明が解決しようとする課題

[0009] 本発明の目的はRISCプロセッサ及びその命令アドレスの変換検索方法を提供することにある。これは、RISCプロセッサのX86仮想機において、X86のソース命令アドレスからMIPS目標命令アドレスへの変換を加速し、仮想機の性能を向上させる。]
課題を解決するための手段

[0010] 本発明の目的を実現するため、RISCプロセッサ装置を提供する。RISCプロセッサはデコーダを含み、前記のデコーダは検索テーブルモジュールを含み、該検索テーブルモジュールは、検索テーブルを利用してX86のソース命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われる。]
[0011] 前記の検索テーブルモジュールは、検索サブモジュールとインデックスサブモジュールを含み、前記の検索サブモジュールは、内容に基づき検索テーブルにインデックスを付け、表項目がヒットされた場合には、対応する内容を目標レジスタに保存し、表項目がヒットされなかった場合には、不命中サービスプログラムの入口アドレスを目標レジスタに保存する。]
[0012] 前記のインデックスサブモジュールは、内容に基づき検索テーブルにインデックスを付け、該内容が所在する表項目のインデックスを得る。
前記の検索テーブルモジュールはさらに書き込みサブモジュールを含み、該書き込みサブモジュールは、検索テーブルの表項目のインデックスに基づき、検索テーブルに書き込む。]
[0013] 前記の検索テーブルモジュールはさらに読み取りサブモジュールを含み、該読み取りサブモジュールは、検索テーブルの表項目のインデックスに基づき、検索テーブルの内容を読み取る。]
[0014] 前記の検索テーブルは、内容に基づきアドレッシングする検索テーブルであり、コンテント・アドレッサブル・メモリーまたはランダムアクセスメモリーにより実現される。
前記の検索テーブルは、三つの領域:ASID領域、SPC領域及びTPC領域を含む。その中、
ASID領域は、オペレーティングシステムにおいて複数のX86仮想機プロセスを始めるID番号を保存することに使われる。]
[0015] SPC領域は、X86のソース命令アドレスを保存することに使われる。
TPC領域は、MIPS目標命令アドレスを保存することに使われる。
前記の不命中サービスプログラムの入口アドレスは、仮想機により提供されるひとつのデフォルトであり、CP0レジスタCAM.defaultまたは検索テーブルの第0項目に保存される。]
[0016] 本発明の目的を実現するため、さらにRISCプロセッサの命令アドレスの変換検索方法を提供する。該RISCプロセッサはデコーダを含み前記のデコーダは検索テーブルモジュールを含み、該検索テーブルモジュールは、検索テーブルを利用してX86のソース命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われる。該方法は以下のステップを含む。]
[0017] ステップA:RISCプロセッサのX86の仮想機が起動するとき、検索テーブルを初期化し、得られたX86の仮想機の命令アドレスからMIPS命令アドレスの内容を検索テーブルに書き込む。]
[0018] ステップB:RISCプロセッサのX86の仮想機のジャンプ命令は、X86のソース命令アドレスから目標命令アドレスへの変換を完成するために、検索テーブルをアクセスする。
前記のステップBは以下のステップを含む。]
[0019] ステップB1:検索テーブルの表項目の値を検索するCAMPV命令を使用して、レジスタのソース命令アドレスに基づき検索テーブルを検索して目標命令アドレスを得る。
ステップB2:検索がヒットした場合、直接に得られた目標命令アドレスの値を目標レジスタに保存し、プログラムはジャンプ命令によって該目標アドレスがポイントするコードセグメントにジャンプして実行される。]
[0020] ステップB3:検索がヒットしなかった場合、不命中サービスプログラムのアドレスが得られ、該アドレスは、仮想機によって提供されて目標レジスタに保存され、プログラムは不命中サービスプログラムにジャンプして実行される。]
[0021] 前記方法は、不命中サービスプログラムは仮想機が維持するハッシュ表の内容に基づき、検索テーブルを書き直すステップCを更に含み、該ステップCは、前記前記のステップB3の後に実行される。]
[0022] 前記のステップCは以下のステップを含む。
ステップC1:検索テーブルの表項目のインデックスを検索するCAMPI命令を使用して、ソース命令アドレスの値に基づき該値が所在する表項目のインデックスを得て、さらに該インデックスを目標レジスタに保存する。]
[0023] ステップC2:検索テーブルの表項目のインデックスに基づき検索テーブルに書き込むCAMWI命令を使用して、目標レジスタのインデックスの値に基づき、プロセスのASID、ソース命令アドレスおよび対応する目標命令アドレスを検索テーブルに書き込む。]
[0024] 前記方法は、検索テーブルのひとつの内容を無効にし、あるいは検索テーブルの表項目のインデックスに基づき検索テーブルRAMの内容を読み取るステップDを更に含み、該ステップDは、前記のステップC2の後に実行される。]
図面の簡単な説明

[0025] 本発明によるRISCプロセッサ装置のデコーダの模式図である。
本発明によるCAMPV命令を実現する例を示す図である。
本発明によるRISCプロセッサ装置の命令アドレスの変換検索方法のフローチャートである。]
実施例

[0026] 本発明の目的、技術の解決策、および本発明の利点をより明確にするため、以下に添付図面及び実施例により、本発明によるRISCプロセッサ装置及び命令アドレスの変換検索方法について更に詳細に説明する。ここで説明される例は、本発明を解釈するためのものであって、本発明の範囲を限定するためのものではないと理解されるべきである。]
[0027] 本発明の実施例は、MIPS64命令セットのRISCプロセッサ装置を例として、本発明について説明するが、本発明の特許請求の範囲を限定するためのものではなく、本発明はその他の命令セットのRISCプロセッサにおいても適用できる。]
[0028] 図1に示されているように、本発明の実施例に係るRISCプロセッサ装置は、デコーダ1を含んでいる。前記のデコーダ1は検索テーブルモジュール2を含み、この検索テーブルモジュール2は、検索テーブル3を利用してX86のソース命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われる。]
[0029] 本発明はハードウェアで一つの検索テーブル3をサポートし、X86のプログラム中のジャンプアドレスからMIPSジャンプアドレスへの翻訳に対してクイック検索を行い、仮想機の性能を向上させる。]
[0030] 一つの実施可能な方式として、前記の検索テーブル3は内容基づいてアドレッシングする検索テーブルであってもよく、この場合、コンテント・アドレッサブル・メモリー/ランダムアクセスメモリー(Content-Addressable Memory/Random Access Memory ,CAM/RAM)で実現する。ここで、RAMは一つのアドレスを入力して、対応するアドレス中のデータを出力する;CAMは内容を入力して、この内容が保存されたユニットのインデックス番号またはこのインデックス番号と関連する別のユニットの内容を出力する。]
[0031] 該検索テーブル3は内容アドレッシングの検索テーブルであってもよく、この場合、X86のジャンプアドレスからMIPSジャンプアドレスへの翻訳が実現され、即ちRISCプロセッサのX86の仮想機中に、X86の元の命令アドレスからMIPS目標命令アドレスへの変更が完成される。そのテーブルの表項目は表1の通りである。
表1 検索テーブルの表項目]
[0032] 表1に示されたように、X86のソース命令(SPC)からMIPS目標命令アドレス(TPC)への変換は三つの領域を使用する:ASID領域、SPC領域とTPC領域。]
[0033] その中、ASID領域はオペレーティングシステムにおいて複数のX86の仮想機プロセスを開始するID番号を保存することに使われる。これらの複数のX86の仮想機プロセスは全て検索テーブル3を使用する必要があるとき、オペレーティングシステムにより、互いに干渉されないように、それぞれ分布されたID番号(ASID)を区別する。]
[0034] SPC領域はX86のソース命令アドレスを保存することに使われる;
TPC領域はMIPS目標命令アドレスを保存することに使われる;
検索テーブルモジュール2が検索するとき、当時のX86の仮想機プロセスのASIDと検索テーブル命令でのSPCが一緒に検索テーブルの「アドレス」部分となり、この「アドレス」部分が全ての検索テーブルの表項目に送られる。それぞれの表項目は自身で保存されたASID、SPCを入力と比べ、マッチしたらその中に保存されたTPCを出力する。ゆえに、RISCプロセッサのX86の仮想機プロセスについて、検索しようとするX86のソース命令アドレスを入力すれば、検索テーブル3中から対応するMIPS目標命令アドレスを見つけることができる。]
[0035] ここで、検索テーブル3中のSPC領域とTPC領域の値は仮想機によって初期化の際に初期化の処理が行われるが、ASID領域の値はローカルオペレーティングシステムによって与えられる。]
[0036] 図1に示されたように、本発明に係る前記の検索テーブルモジュール2は検索サブモジュール4、インデックスサブモジュール5、書き込みサブモジュール6及び読み取りサブモジュール7を含むことが好ましい。その中:
前記の検索サブモジュール4は、内容に基づき検索テーブル3にインデックスを付け、表項目がヒットされた場合には、対応する内容を目標レジスタに保存する;表項目がヒットされなかった場合には、不命中サービスプログラムの入口アドレスを目標レジスタに保存する。]
[0037] 前記のインデックスサブモジュール5は、内容に基づき検索テーブル3にインデックスを付け、該内容が所在する表項目のインデックスを得る。
インデックスサブモジュール5は、汎用レジスタ中の内容に基づき検索テーブル3にインデックスを付け、表項目がヒットされた場合には、対応する表項目のインデックスを目標レジスタ中に保存し、表項目がヒットされなかった場合には、目標レジスタの最高ビットを1に設定する。]
[0038] 前記の書き込みサブモジュール6は、検索テーブルの表項目のインデックスに基づき、検索テーブル3に書き込む。
書き込みサブモジュール6は、汎用レジスタ中のインデックス(index)の値に基づき、汎用レジスタ中の値をそれぞれ検索テーブル3のCAMとRAMの表項目に書き込む。]
[0039] 前記の読み取りサブモジュール7は、検索テーブル3の表項目のインデックス(index)に基づき、検索テーブル3の表項目の内容を読み取る。
前記の読み取りサブモジュール7は、汎用レジスタ中のインデックス(index)の値に基づき検索テーブル3の内容を読み取り、さらに目標レジスタに保存する。]
[0040] 一つの実施可能の方式として、本発明の実施例では、四つの該検索テーブルのアーキテクチャをアクセスまたは修正する命令により、検索サブモジュール4、インデックスサブモジュール5、書き込みサブモジュール6及び読み取りサブモジュール7を実現する。その中:
1つ目の命令は、CAMPV命令である。図2に示されているように、該命令は検索テーブルRAMの表項目の値を検索する。] 図2
[0041] 該命令のフォーマットは以下の通りである:
CAMPVrd, rs
GPR[rs]中の内容に基づき検索テーブルにインデックスを付け、RAM中の内容が得られる。汎用レジスタGPR[rs] 中の内容に基づき検索テーブルにインデックスを付け、ヒットされたら、対応するRAM中の内容を目標レジスタGPR[rd] 中に保存する;表項目がヒットされなかったら、不命中サービスプログラムの入口アドレスを目標レジスタGPR[rd] 中に保存する。]
[0042] 命令の実行プロセスは、命令のロードのデコードの実行などを含む全体的にプロセッサの命令の実行プロセスであり、アクセスする部分は前記のCAM検索テーブルである。
2つ目の命令は、CAMPI命令である。該命令は検索テーブルRAMの表項目のインデックス(index)を検索する。]
[0043] 該命令のフォーマットは以下の通りである:
CAMPI rd, rs
GPR[rs]中の内容に基づき検索テーブルにインデックスを付け、該内容がある表項目のインデックス(index)は得られる。汎用レジスタGPR[rs] 中の内容に基づき検索テーブルにインデックスを付け、ヒットされたら、対応する表項目のインデックス(index)を目標レジスタGPR[rd] 中に保存する;表項目がヒットされなかったら、ヒットされなかった目標レジスタrdの最高ビットを1にする。]
[0044] 命令の実行プロセスは、命令のロードのデコードの実行などを含む全体的にプロセッサの命令の実行プロセスであり、アクセスする部分は前記のCAM検索テーブルである。
3つ目の命令は、CAMWI命令である。該命令は検索テーブルRAMの表項目のインデックス(index)に基づき、検索テーブルを書き込む。該命令のフォーマットは以下の通りである:
CAMWI rd, rs, rt
GPR[rd]の値に基づいて検索テーブルを書き込む。汎用レジスタGPR[rd] 中のインデックスの値に基づき、GPR[rs]レジスタとGPR[rt]レジスタ中の値をそれぞれ検索テーブルのCAMとRAMの表項目中に書き込む。
インデックス(index)の値が検索テーブルの表項目の範囲を超えたとき、アドレスエラーの例外が発生する。]
[0045] 命令の実行プロセスは、命令のロードのデコードの実行などを含む全体的にプロセッサの命令の実行プロセスであり、アクセスする部分は前記のCAM検索テーブルである。
4つ目の命令は、RAMRI命令である。該命令は検索テーブルRAMの表項目のインデックス(index)に基づき、検索テーブルRAMの表項目の内容を読み取る。該命令のフォーマットは以下の通りである:
RAMRI rd, rs
GPR[rs]の値に基づいて検索テーブルRAMの内容を読み取る。汎用レジスタGPR[rs] 中のindexの値に基づき検索テーブルRAMの内容を読み取り、目標レジスタGPR[rd] 中に保存する。]
[0046] indexの値が検索テーブルの表項目の範囲を超えたとき、アドレスエラーの例外が発生する。
以下に、検索がヒットされなかった場合、即ち検索テーブルが検索できなかった、即ちCAMに相応するプロセスが期待したペアのSPC-TPCがない場合、対応する処理を詳しく説明する。]
[0047] 検索できなかった場合、即ちヒットされなかったら、不命中サービスプログラムの入口アドレスへジャンプし、不命中サービスプログラムで処理する。
不命中サービスプログラムは現存のルーチンであり、MIPS命令セットのRISCプロセッサのひとつの現在の標準技術であるため、本発明の実施例で詳しく説明しない。]
[0048] 一つの実施可能な方式として、前記の不命中サービスプログラムの入口アドレスは、ひとつのCP0レジスタCAM.defaultの保存で実現され、仮想機によりひとつのデフォルトを提供し、不命中サービスプログラムの入口アドレスとして、CP0レジスタCAM.defaultに保存する。]
[0049] これはプロセッサのひとつの制御レジスタであり、他の制御レジスタと同じの読み書き方式を使用し(アドレスだけ異なる)、仮想機により、不命中サービスプログラムの入口アドレスとして、ひとつのデフォルトを提供する。CAMの検索がヒットされなかった場合、前記のCAM.defaultに保存したデフォルトを目標レジスタに送り込む。こうすれば検索プログラムがヒットされた場合、MIPS命令アドレスにジャンプして実行する;ヒットされなかった場合、不命中サービスプログラムの入口アドレスにジャンプして、不命中サービスプログラムを利用して検索された対応のアドレスを検索テーブルに書き込む。このようにすれば、検索後にシフト命令を追加して命令がヒットされたかどうかを判断することを回避することができる。]
[0050] この時点に目標アドレスがすでに目標レジスタに保存されたため、現在のMIPS64の直接ジャンプ命令JRrsを利用してジャンプが実現される。
ここで、rsは目標アドレスを保存するレジスタである。]
[0051] 別の実施可能な方式として、不命中サービスプログラムの入口アドレスは、第1の実施例のひとつの制御レジスタに保存されなく、検索テーブルの表項目の第0項目に保存されても良い。]
[0052] この方法においてはひとつの新たな命令VJRが設置され、デフォルトは第31号汎用レジスタの内容をSPCとして検索し、VJRの命令機能は第一種類の方法のCAMPV+JRの二つの命令の機能と類似する。]
[0053] 該命令のフォーマットは以下の通りである:
VJR rt
31号汎用レジスタの値によって検索テーブルのRAMの内容を読み取る。汎用レジスタGPR[31]の値によって検索テーブルのRAMの内容(即ち変換後の目標アドレス)を読み取る。検索が成功した場合、目標レジスタGPR[rt]に保存する。そして命令がrtレジスタの値により目標アドレスにジャンプする;検索が成功しなかった場合、CAMの第0項目のRAM内容を目標レジスタGPR[rt]に保存する。命令はrtレジスタの値により不命中サービスプログラムにジャンプし処理される。]
[0054] 命令の実行プロセスは、命令ロードのデコードの実行などを含む全体的にプロセッサの命令を実行するプロセスであり、そのデコードの実行時にアクセスする部分は前記のCAM検索テーブルである。]
[0055] ソース命令アドレスのジャンプ命令を使用するとき、該命令の前にひとつの命令、例えばX86のJMPrax命令によりソース命令アドレスの値をひとつ固定されたレジスタ(例えば31号レジスタ)に入れる;
二つのMIPS命令で実現する:
Addiu $31,r2,0x0
VJR r4
ジャンプ命令がデコードされた後、VJR命令がこの固定されたレジスタの値に基づいて検索した後、ヒットされた場合、直接に目標命令アドレスがポイントしているコードセグメントにおいて実行する;ヒットされなかった場合、直接に検索テーブルの第0項目にジャンプして、その後に不命中サービスプログラムにジャンプする。]
[0056] 本発明に係るRISCプロセッサの命令アドレスの変換検索方法を詳しく説明する。図3に示されたように、この方法は以下のステップを含む。
ステップS100:RISCプロセッサのX86の仮想機が起動するとき、検索テーブルを初期化し、得られたX86の仮想機の命令アドレスからMIPS命令アドレスの内容を検索テーブルに書き込む;
RISCプロセッサのX86の仮想機が初期化するとき、不命中サービスプログラムを利用して、不命中サービスプログラムが維持するハッシュ表に基づき、CAMPI命令とCAMWI命令の初期化によって対応するX86命令アドレスからMIPS命令アドレスへの検索テーブルを得る。] 図3
[0057] ステップS200:RISCプロセッサのX86の仮想機のジャンプ命令は、X86の元の命令アドレスから目標命令アドレスへの変換を完成させる必要があるため、検索テーブルをアクセスする;
前記のステップS200は以下のステップを含む:
ステップS210:検索テーブルの表項目の値を検索するCAMPV命令を使用して、レジスタのソース命令アドレスにより検索テーブルを検索して目標命令アドレスを得る;
ステップS220:検索がヒットされた場合、直接に得られた目標命令アドレスの値を目標レジスタに保存し、プログラムはジャンプ命令によって該目標アドレスがポイントしているコードセグメントにジャンプし実行する;
ステップS230:検索がヒットされなかった場合、仮想機から得られて不命中サービスプログラムのアドレスを目標レジスタに保存し、プログラムは、不命中サービスプログラムにジャンプして実行される。]
[0058] ステップS300:不命中サービスプログラムは仮想機が維持するハッシュ表の内容に基づき、再び検索テーブルを書き直す;
前記のステップS300は以下のステップを含む:
ステップS310:検索テーブルの表項目のインデックスを検索するCAMPI命令を使用して、ソース命令アドレスの値に基づいて該値が所在する表項目のインデックス(index)を得て、さらに該当インデックスを目標レジスタに保存する。]
[0059] ステップS320:検索テーブルの表項目のインデックス(index)により検索テーブルに書き込むCAMWI命令を使用して、目標レジスタのインデックスの値に基づき、プロセスのASID、ソース命令アドレスおよび対応する目標命令アドレスを検索テーブルに書き込む。
前記のRISCプロセッサの命令アドレスの変換検索方法はさらに以下のステップを含むのが好ましい:
ステップS400:検索テーブルのひとつの内容を無効にする;あるいは検索テーブルのRAMの内容を読み取る。]
[0060] 検索テーブルのRAM表項目のインデックス(index)により検索テーブルに書き込むCAMWI命令を使用して、指定されたインデックス(index)の該表項目に固定された値を書き込み、前記の固定された値がプログラムのソース命令アドレスとマッチせず、即ち該表項目が無効にさせた。]
[0061] デバッグを容易にするために、検索テーブルのRAM表項目のインデックス(index)により検索テーブルRAMの表項目の内容を読み取るRAMRI命令を使用して、指定されたインデックス(index)の表項目の検索テーブルRAMの値を読み取り、目標レジスタに保存する。]
[0062] 本発明のRISCプロセッサおよび命令アドレスの変換検査の方法は、RISCプロセッサ中にX86のソース命令アドレスからMIPS目標命令アドレスのマップへの検索テーブルの構造を増加させ、RISCプロセッサのX86の仮想機において、X86の元の命令アドレスからMIPS目標命令アドレスへの変換を加速させて、仮想機の性能を向上させる。]
[0063] 添付図面を参照して本発明の具体的な実施例について説明することにより、本発明のその他の態様および特徴は当業者には自明である。
以上、本発明の具体的な実施例について説明したが、これらの実施例は単なる例であって、本発明を限定するため使用するべきものではない。本発明は添付特許請求の範囲に従って解釈すべきものである。]
[0064] 本発明のRISCプロセッサ装置および命令アドレスの変換検索の方法は、RISCプロセッサにおいてX86のソース命令アドレスからMIPS目標命令アドレスへのマッピングを実現可能な検索テーブルのアーキテクチャを増加させ、デコーダ中の検索テーブルモジュールは、検索テーブルを利用してX86のソース命令アドレスからMIPS目標命令アドレスへの変換を実現し、RISCプロセッサのX86仮想機において、X86のソース命令アドレスからMIPS目標命令アドレスへの変換を加速する。そのため、本発明は、仮想機の性能を向上させることができる。]
权利要求:

請求項1
デコーダを含むRISCプロセッサ装置において、前記のデコーダは検索テーブルモジュールを含み、該検索テーブルモジュールは、検索テーブルを利用してX86ソース命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われることを特徴とするRISCプロセッサ装置。
請求項2
前記の検索テーブルモジュールは、検索サブモジュールとインデックスサブモジュールを含み、前記の検索サブモジュールは、内容に基づき検索テーブルにインデックスを付け、表項目がヒットされた場合には、対応する内容を目標レジスタに保存し、表項目がヒットされなかった場合には、不命中サービスプログラムの入口アドレスを目標レジスタに保存し、前記のインデックスサブモジュールは、内容に基づき検索テーブルにインデックスを付け、該内容が所在する表項目のインデックスを得ることを特徴とする請求項1に記載のRISCプロセッサ装置。
請求項3
前記の検索テーブルモジュールはさらに書き込みサブモジュールを含み、該書き込みサブモジュールは、検索テーブルの表項目のインデックスに基づき、検索テーブルに書き込むことを特徴とする請求項2に記載のRISCプロセッサ装置。
請求項4
前記の検索テーブルモジュールはさらに読み取りサブモジュールを含み、該読み取りサブモジュールは、検索テーブルの表項目のインデックスに基づき、検索テーブルの内容を読み取ることを特徴とする請求項3に記載のRISCプロセッサ装置。
請求項5
前記の検索テーブルは、内容に基づきアドレッシングする検索テーブルであり、コンテント・アドレッサブル・メモリーまたはランダムアクセスメモリーにより実現されることを特徴とする請求項1から4のいずれかに記載のRISCプロセッサ装置。
請求項6
前記の検索テーブルは、三つの領域:ASID領域、SPC領域及びTPC領域を含み、ASID領域は、オペレーティングシステムにおいて複数のX86仮想機プロセスを始めるID番号を保存することに使われ、SPC領域は、X86ソース命令アドレスを保存することに使われ、TPC領域は、MIPS目標命令アドレスを保存することに使われることを特徴とする請求項5に記載のRISCプロセッサ装置。
請求項7
前記の不命中サービスプログラムの入口アドレスは、仮想機により提供されるひとつのデフォルトであり、CP0レジスタCAM.defaultまたは検索テーブルの第0項目に保存されることを特徴とする請求項2に記載のRISCプロセッサ装置。
請求項8
RISCプロセッサの命令アドレスの変換検索方法であって、前記RISCプロセッサはデコーダを含み、前記のデコーダは検索テーブルモジュールを含み、該検索テーブルモジュールは、検索テーブルを利用してX86のソース命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われる方法において、該方法は、RISCプロセッサのX86の仮想機が起動するとき、検索テーブルを初期化し、得られたX86の仮想機の命令アドレスからMIPS命令アドレスまでの内容を検索テーブルに書き込むステップAと、RISCプロセッサのX86の仮想機のジャンプ命令は、X86のソース命令アドレスから目標命令アドレスへの変換を完成するために、検索テーブルをアクセスするステップBとを含むことを特徴とするRISCプロセッサの命令アドレスの変換検索方法。
請求項9
前記のステップBは、検索テーブルの表項目の値を検索するCAMPV命令を使用して、レジスタのソース命令アドレスに基づき検索テーブルを検索して目標命令アドレスを得るステップB1と、検索がヒットした場合、直接に得られた目標命令アドレスの値を目標レジスタに保存し、プログラムはジャンプ命令によって該目標アドレスがポイントするコードセグメントにジャンプして実行されるステップB2と、検索がヒットしなかった場合、不命中サービスプログラムのアドレスが得られ、該アドレスは、仮想機によって提供されて目標レジスタに保存され、プログラムは、不命中サービスプログラムにジャンプして実行されるステップB3とを含むことを特徴とする請求項8に記載の命令アドレスの変換検索方法。
請求項10
不命中サービスプログラムは、仮想機が維持するハッシュ表の内容に基づき、検索テーブルを書き直すステップCを更に含み、該ステップCは、前記前記のステップB3の後に実行されることを特徴とする請求項9に記載の命令アドレスの変換検索方法。
請求項11
前記のステップCは、検索テーブルの表項目のインデックスを検索するCAMPI命令を使用して、ソース命令アドレスの値に基づき該値が所在する表項目のインデックスを得て、さらに該インデックスを目標レジスタに保存するステップC1と、検索テーブルの表項目のインデックスに基づき検索テーブルに書き込むCAMWI命令を使用して、目標レジスタのインデックスの値に基づき、プロセスのASID、ソース命令アドレスおよび対応する目標命令アドレスを検索テーブルに書き込むステップC2とを含むことを特徴とする請求項10に記載の命令アドレスの変換検索方法。
請求項12
検索テーブルのひとつの内容を無効にし、あるいは検索テーブルの表項目のインデックスに基づき検索テーブルRAMの内容を読み取るステップDを更に含み、該ステップDは、前記のステップC2の後に実行されることを特徴とする請求項11に記載の命令アドレスの変換検索方法。
类似技术:
公开号 | 公开日 | 专利标题
US10303620B2|2019-05-28|Maintaining processor resources during architectural events
US10394563B2|2019-08-27|Hardware accelerated conversion system using pattern matching
US10318322B2|2019-06-11|Binary translator with precise exception synchronization mechanism
US10534727B2|2020-01-14|Apparatus and method for handling page protection faults in a computing system
JP2018022508A|2018-02-08|ページ属性サポートのある仮想アドレスから物理アドレスへの変換
US10185567B2|2019-01-22|Multilevel conversion table cache for translating guest instructions to native instructions
US9639476B2|2017-05-02|Merged TLB structure for multiple sequential address translations
US9104594B2|2015-08-11|Operational efficiency of virtual TLBs
US9104427B2|2015-08-11|Computing system with transactional memory using millicode assists
US9208103B2|2015-12-08|Translation bypass in multi-stage address translation
US20160026486A1|2016-01-28|An allocation and issue stage for reordering a microinstruction sequence into an optimized microinstruction sequence to implement an instruction set agnostic runtime architecture
US9183053B2|2015-11-10|Migrating threads across NUMA nodes using corresponding page tables and based on remote page access frequency
US8566563B2|2013-10-22|Translation table control
US6006033A|1999-12-21|Method and system for reordering the instructions of a computer program to optimize its execution
US7089398B2|2006-08-08|Address translation using a page size tag
EP0327196B1|1995-03-22|Processor simulation
EP1955153B1|2013-11-20|Method and apparatus for converting program code with access coordination for a shared resource
KR101232343B1|2013-02-13|X86 가상머신을 지원하는 risc 프로세서 장치 및 방법
US7069413B1|2006-06-27|Method and system for performing virtual to physical address translations in a virtual machine monitor
JP6124463B2|2017-05-10|一方のアーキテクチャのコードモジュールが他方のアーキテクチャのライブラリモジュールを用いることを可能にするインターアーキテクチャ互換性モジュール
US5835964A|1998-11-10|Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map
KR100463810B1|2004-12-29|어드레스되는 구성요소의 물리적 특성에 관한 추측 실패를 검출하는 마이크로프로세서용 메모리 제어기
US20150242317A1|2015-08-27|Multi-core processor system, control program, and control method
US9645795B1|2017-05-09|Accelerated class check
AU2012208973B2|2014-09-04|Techniques for memory de-duplication in a virtual system
同族专利:
公开号 | 公开日
KR20100090709A|2010-08-16|
JP5261503B2|2013-08-14|
KR101200083B1|2012-11-12|
CA2712683A1|2009-07-30|
US20100293545A1|2010-11-18|
EP2249252A4|2012-04-18|
WO2009092180A1|2009-07-30|
CN101216778B|2011-04-13|
EP2249252A1|2010-11-10|
CN101216778A|2008-07-09|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2012-01-21| RD04| Notification of resignation of power of attorney|Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20120120 |
2012-04-27| A711| Notification of change in applicant|Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20120426 |
2012-05-18| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20120427 |
2012-12-07| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121205 |
2012-12-12| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121211 |
2013-03-12| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130311 |
2013-03-16| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130315 |
2013-03-19| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130318 |
2013-03-27| TRDD| Decision of grant or rejection written|
2013-04-03| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130402 |
2013-05-02| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130426 |
2013-05-02| R150| Certificate of patent or registration of utility model|Ref document number: 5261503 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
2013-05-02| FPAY| Renewal fee payment (event date is renewal date of database)|Free format text: PAYMENT UNTIL: 20160502 Year of fee payment: 3 |
2016-04-12| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2017-03-28| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2018-02-20| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2019-03-12| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2020-02-10| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2021-03-08| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]